• 締切済み

phpで正規表現を用いて、一定の文字数を超えて出てくる任意の文字のところで文字列を分割する方法を教えてください。

すいません質問です。 某掲示板で質問させていただき、返事をもらいましたが、 答えがわからなかったためここで質問させてもらいます。 今運営しているPCサイトの携帯版を作ろうと思っています。 携帯用にするとき、元のサイトのサイズが大きいため分割する必要があると思い自分なりにやってみましたが、 分割のやり方が悪いため、htmlタグの途中で切れたりして変になってしまいます。 //1ページあたりの文字数(ページのサイズ) $pagesize=1000; 元の文字列をページサイズで割り、合計のページ数を出す $totalpage=ceil($str/$pagesize); //↓1ページ目の場合は、テキストが0~1000までの部分文字列になる $text=mb_substr($str,($page-1)*$pagesize,$pagesize); 上記のようにやってみたのですが、下記のようになったりします。 ---------------------------------------------------- nページ目のテキスト終わり部分 ・・・・・・・・ <a href="http: --------------------------------------------------- n+1ページ目のテキスト始め部分 "//hoge.com">ホゲドットコム</a> --------------------------------------------------- タグの部分で分割させないためには、 1000文字を超えたところで一番最初に出てくる \n で分割したりすればいいと思うのですが、 それはどのようにやればいいのでしょうか。 アドバイスお願いします。 ___________________________________________________________ 上記のように質問させていただきました すると ↓のようなレスをいただきました。 正規表現で分割 /^.{1000}.*?\n/s  ____________________________________________________________ そこで ↓1000はページサイズ print_r(preg_split("/^.{1000}.*?\n/s",$str)); とやってみましたが、 [1]の部分に全部はいってしまい、分割されていません。 どうすればいいのでしょうか 助けてください。

みんなの回答

  • masa6272
  • ベストアンサー率66% (93/140)
回答No.1

こんなのでどうでしょう? 10文字で、チェックしてますが。 <?php $s = "aaaaaaaaaaaaaaa bbbbbbbb cc ddddddddddd eeeeeee"; while(preg_match('/^(.{10}[^\n]*\n)(.*)/s', $s, $a)) { echo "{$a[1]}\n\n"; $s = $a[2]; } echo $s; ?>

関連するQ&A