- ベストアンサー
指定した文字列まで取得したい
指定した文字列以降はあったのですが http://www.php-ref.com/bapi/02_strstr.html 指定した文字列までを見つけれません… 例えば あいうえお と、あった場合 「う」を指定すれば あい と出るようにしたい 宜しくお願いします
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
1以上の4つまでをとればいいなら以下でどうでしょう? $pattern="/^(.*?<\/a>){1,4}/isu"; preg_match($pattern,$str,$match); print htmlspecialchars($match[0]); //print $match[0];
その他の回答 (3)
- yambejp
- ベストアンサー率51% (3827/7415)
>4つ目の</a>まで表示(取り出し)させたい場合 意味がよくわかりません・・・ こういうこと? <?PHP $str=<<<eof test <a href="1.jpg">1</a> <a href="2.jpg">2</a> <a href="3.jpg">3</a> <a href="4.jpg">4</a> <a href="5.jpg">5</a> test eof; $pattern="/^(.*?<\/a>){4}/isu"; preg_match($pattern,$str,$match); print htmlspecialchars($match[0]); ?>
補足
ご回答ありがとうございます $abc = file_get_contents("xxx.html"); $abc = mb_convert_encoding($abc, "UTF-8", "Shift_JIS"); echo $abc; 上記 $abc で 4つ目の</a>まで表示(取り出し)させたいです 3つまでしかない場合3つ目までとか、、、、 厳しいでしょうか
- bm_hiro
- ベストアンサー率51% (200/388)
日本語という事でマルチバイトなのが少し気になってみたり。( ̄∇ ̄;A <?php $str = "あいうえお"; $needle = "う"; print mb_substr($str , 0 , mb_strpos($str , $needle)); ?> http://php.net/manual/ja/function.mb-substr.php http://www.php.net/manual/ja/function.mb-strpos.php
お礼
ありがとうございます 新たな問題が発生しました 4つ目の</a>まで表示(取り出し)させたい場合はどのようにすればよろしいでしょうか
- yambejp
- ベストアンサー率51% (3827/7415)
(1)PHP5.3以降であれば第3引数にtrueを指定する。 http://www.php.net/manual/ja/function.strstr.php (2)preg_matchで処理する。 <?PHP $str="あいうえお"; $pattern="/^.*(?=う)/u"; preg_match($pattern,$str,$match); print $match[0]; ?> (3)分割して先頭をとる <?PHP $str="あいうえお"; print array_shift(explode("う",$str)); ?> (4)さいあくstrstrして残りをとる <?PHP $str="あいうえお"; print str_replace(strstr($str,"う"),"",$str); ?>
お礼
ありがとうございます 新たな問題が発生しました 4つ目の</a>まで表示(取り出し)させたい場合はどのようにすればよろしいでしょうか
お礼
例えば2つあった場合、1つしか表示されません。。。 $pattern="/^(.*?<\/a>){4}/isu"; の場合、3つしかない場合は、1つも表示されません 難しいでしょうか。。。
補足
何も表示されず、真っ白になっちゃいました、、、