人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPの正規表現に関する質問です。

$word = ”<tr>
<tdwidth=¥”150¥”>1550〜</TD><!--コメント開始-->”;

この文章から1550の文字列だけを抜く方法を教えて下さい。

<tr>の後ろに改行と空白があるのと、「〜」という文字、さらには<!--の処理が難しくてわかりません。最適な答えには項ポイント差し上げます。

●質問者: redhat
●カテゴリ:コンピュータ
✍キーワード:PHP Word ポイント 差し 文字列
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● cooper0524
●5ポイント

http://www.hatena.ne.jp/awindow?qid=1134717051

1550の文字列だけを抜いた文字列がほしい、というのであれば、正規表現は使わずに


$word_after = str_replace(”1550”,””,$word);


でいけるのではないでしょうか?

勘違いしていたらすみません。

◎質問者からの返答

逆です。1550の文字列が欲しいです。


2 ● gontatta
●20ポイント

http://jp2.php.net/manual/ja/function.preg-match.php

PHP: preg_match - Manual

単に4桁の数字を拾いたいというのであれば、


$match = preg_match(”/(¥d{4}+)/”,$word,$reg);


ですが


$match = preg_match(”/<tdwidth=.+?>(¥d+)/”,$word,$reg);


print ”reg:$reg[1] match:$match”;


とし方がこの場合良いでしょうか。

◎質問者からの返答

ありがとうございます。

早速ためしてみます。


3 ● ito-yu
●20ポイント

http://php.net/mb_eregi

PHP: mb_eregi - Manual

mb_eregi(’^<tr>¥n<td width=”150”>([0-9]+)?</td>.*’, $word, $match);

echo $match[1];


などどうでしょうか

◎質問者からの返答

ありがとうございmさう。


4 ● TheNetIsVast
●15ポイント

http://www.yahoo.co.jp/

Yahoo! JAPAN

<?php

$word = ”<tr>

<td width=¥”150¥”>1550?</TD><!--コメント開始-->”;

print ereg_replace( ”.*>([0-9]*)?<.*”, ”¥¥1”, $word);

?>

◎質問者からの返答

ありがとうございます。


5 ● hoge_systemz
●20ポイント

http://www.2ch.net/

?Q??????????f??????????

URLはダミーです。

tdとwidthの間は半角スペースですよね?その他、全角になってる部分は半角に直しての検証です。

円のところは、円マークか、バックスラッシュに置き換えて下さい


$word = ”<tr>

<td width=¥”150¥”>1550?</TD><!--コメント開始-->”;


$pattern = ”<[^>]+>|¥n |?”;

$replacement = ’’;

$word_extracted = mb_ereg_replace($pattern,$replacement,$word);


echo word_extracted;//確認


解りやすい様に多少回りくどく書いています。

これでいけるのではないでしょうか?

◎質問者からの返答

ありがとうございます。、やってみます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ