Str_Replace问题

时间:2012-12-24 02:27:22

标签: php regex str-replace

我是一名初学程序员,制作一个相当简单的scrape-website并私下将信息存储在mysql数据库中,以了解有关编程的更多信息。

这是我试图抓的代码:

<li id="liIngredient" data-ingredientid="3914" data-grams="907.2">
                <label>
                    <span class="checkbox-formatted"><input id="cbxIngredient" type="checkbox" name="ctl00$CenterColumnPlaceHolder$recipeTest$recipe$ingredients$rptIngredientsCol1$ctl01$cbxIngredient" /></span>
                    <p class="fl-ing" itemprop="ingredients">
                        <span id="lblIngAmount" class="ingredient-amount">2 pounds</span>
                        <span id="lblIngName" class="ingredient-name">ground beef chuck</span>

                    </p>
                </label>
            </li>

<li id="liIngredient" data-ingredientid="5838" data-grams="454">
                <label>
                    <span class="checkbox-formatted"><input id="cbxIngredient" type="checkbox" name="ctl00$CenterColumnPlaceHolder$recipeTest$recipe$ingredients$rptIngredientsCol1$ctl02$cbxIngredient" /></span>
                    <p class="fl-ing" itemprop="ingredients">
                        <span id="lblIngAmount" class="ingredient-amount">1 pound</span>
                        <span id="lblIngName" class="ingredient-name">bulk Italian sausage</span>

                    </p>
                </label>
            </li>

在刮取数据之后,我试图使用str_replace去除除了(使用第一个例子)2磅碎牛肉(或第二个例子中的1磅散装意大利香肠)以外的所有东西。

这是我的尝试:

$ingredients = str_replace('#<label>\s<span class="checkbox-formatted"><input id="cbxIngredient" type="checkbox" name=".*?" /></span>\s<p class="fl-ing" itemprop="ingredients">\s#', null, $ingredients);
              echo $ingredients;

理论上,应删除span id=lblIngAmount部分的所有内容。我哪里错了? str_replace之后和之前的文本保持不变。怎么会?

感谢您的帮助!如果您需要更多细节,我很乐意给他们!

2 个答案:

答案 0 :(得分:2)

您想使用preg_replace()但是您不应该使用正则表达式来操作HTML。请改用PHP的DOMDocument

答案 1 :(得分:2)

不要使用正则表达式来解析HTML。

请参阅How to parse HTML

Regex可以在这个特定情况下工作,但由于这是一个学习项目,你想要做得对。