如何从PHP中的字符串中删除♥(或‥)?

时间:2012-11-11 15:28:16

标签: php string replace

此文本块表示作为变量的原始外部源:

// the following characters are not-consistent 
text here
// the following characters are consistent
♥ text1
♥ text2
♥ text3
// the following characters are consistent
some more text here

我想删除除"text here"以外的所有内容,我必须在'部分'中执行此操作,因为其他文本可能存在(即我不能删除"text here"之后的所有内容)。

我可以删除"some more text here",但我无法尝试定位并删除以♥开头的行(或者因为它们当前存储在数据库中)。

所以这些是我的变量

// this is the original external source

$part_one = $external_source; 

// this is the variable that is not working yet

$part_one_a = ;

// this replaces "some more text here" with nothing

$part_one_b = str_replace("some more text here", " ", $part_one);

// this concatenates the variables $part_one_a and $part_one_b

$final = $part_one_a . $part_one_b;
谢谢你。

更新

更具体一点,我需要一种方法来删除这样的文字:

♥ link_one:  http://link_one_here.com/
♥ link_two:  http://link_two_here.com/
♥ link_three:  http://link_three_here.com/

更新两个

我设法用数组上的str_replace删除所有不需要的项目。

我唯一无法瞄准并因此删除的是♥。

我尝试过以下目标:

  • ♥(这是当前存储在中的值 数据库)
  • ♥(在我对字符串应用了一个htmlentities之后)

没有运气 - ♥仍然在显示。如果有人能告诉我如何瞄准♥会非常感激,这个问题将得到解决。

谢谢你。

2 个答案:

答案 0 :(得分:2)

如果我理解正确你需要♥之前的所有text here你可以使用strpos

$stopper = '♥';
$string = 'text here

♥ text1
♥ text2
♥ text3

some more text here' ;
$final = trim(substr($string,0,strpos($string, $stopper)));
var_dump($final);

输出

string 'text here' (length=9)

请注意,您的$stopper也可以是\n新行

答案 1 :(得分:0)

解决方案是:

  1. 对阵列执行str_replace以定位并删除文本的特定部分。
  2. 创建正则表达式并定义可接受的值。
  3. 对不可接受的值执行preg_replace
  4. 这导致显示所有期望的值而没有不可接受的字符的实例。

    最后两个步骤的代码如下:

    // this is the original external source
    
    $part_one = $external_source; 
    
    // create a regex
    
    $regex
    = '~'
    . '['
    . '^'
    . 'A-Z'
    . '0-9'
    . ' '
    . '!_:/,.#$-'
    . ']'
    . '~'
    . 'i'
    ;
    
    // clean the string
    
    $part_one_cleaned = preg_replace($regex, NULL, $part_one);