2011-07-20 14 views
1

私はpreg_replaceを使用してコードセクションを取り除こうとしていますが、正しく動作させるには問題があります。preg_replace質問

コード例:私が使用している

$str = '<p class="code">some string here</p>'; 

PHP:

$pattern = array(); 
$pattern[0] = '!<p class="code">!'; 
$pattern[1] = '!</p>!'; 
preg_replace($pattern,"", $str); 

これは私がpとクラスの間のスペースを除いて欲しいだけのようなコードを除去します。

戻り値:

some string here //notice the single space at the beginning. 

私が取得しようとしている:

some string here //no space at the beginning. 

私は解決策を見つけようと壁に頭を叩いてきました。 preg_replaceを分割するのではなく、チャンクで取り除こうとしているのは、タグ間の文字列にあるものを変更したくないからです。何か案は?

答えて

1

That does not happen for me(そうしないでください)。

他の場所に出力することもできます(文字列を表示するにはvar_dump()を使用してください)。

+0

コメントありがとうございます。私はそれがシンプルだったが、trim()を試してみたところ、文字列の始めのスペースだけでなく、文字列の他のすべてのスペースをトリムしました。私はちょうどその最初のスペースをトリミングし、他のスペースを必要としない。 – David

+0

@David 'trim()'は、末尾と空白を取り除くだけです。 – alex

+0

アレックスあなたは正しかった私はcssなどのクリーンなページで自分のコードを試してみたところ、先頭のスペースが見つからないので、私はそのスペースを別の場所からピックアップしています。助けてくれてありがとう。 – David

0

DOMDocumentを使用するかどうかを調べるには、このスレッドを調べるとよいでしょう。 HTMLを解析しようとすると頭がいっぱいになります。

Robust and Mature HTML Parser for PHP

0

テスト:

<?php 
$str = '<p class="code">some string here</p>'; 

$pattern = array(); 
$pattern[0] = '!<p class="code">!'; 
$pattern[1] = '!</p>!'; 
$result = preg_replace($pattern,"", $str); 
var_dump($result); 

結果:

php pregrep.php                 
string(16) "some string here" 

がうまく動作するようです。

0

アレックス私は余分なスペースを拾っていました。

私はこのようなテキストエリアにそのコードを入れていた。

$str = '<p class="code">some string here</p>'; 
$pattern = array(); 
$pattern[0] = '!<p class="code">!'; 
$pattern[1] = '!</p>!'; 
$strip_str = preg_replace($pattern,"", $str); 


<textarea id="code_area" class="syntaxhl" name="code" cols="66" rows="5"> 
<?php echo $strip_str; ?> 
</textarea> 

これは私に私の余分なスペースを与えたが、ときに私はにコードを変更:なしラインスペース

<textarea id="code_area" class="syntaxhl" name="code" cols="66" rows="5"><?php echo $strip_str; ?></textarea> 

または壊します余分なスペースがなくなりました。

0

なぜ使用しないのですかtrim()

$text = trim($text); 

これは、文字列の周りの空白を削除します。