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


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

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

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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答5件)

id:cooper0524 No.1

回答回数296ベストアンサー獲得回数4

ポイント5pt

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


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


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

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

id:redhat

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

2005/12/16 16:45:51
id:gontatta No.2

回答回数4ベストアンサー獲得回数0

ポイント20pt

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


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


ですが


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


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


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

id:redhat

ありがとうございます。

早速ためしてみます。

2005/12/17 10:43:40
id:ito-yu No.3

回答回数323ベストアンサー獲得回数14

ポイント20pt

http://php.net/mb_eregi

PHP: mb_eregi - Manual

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

echo $match[1];


などどうでしょうか

id:redhat

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

2005/12/17 10:44:13
id:TheNetIsVast No.4

回答回数3ベストアンサー獲得回数1

ポイント15pt

<?php

$word = ”<tr>

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

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

?>

id:redhat

ありがとうございます。

2005/12/17 10:44:30
id:hoge_systemz No.5

回答回数23ベストアンサー獲得回数0

ポイント20pt

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;//確認


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

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

id:redhat

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

2005/12/17 10:44:56

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません