dsadsadsa1231 2014-06-23 10:48
浏览 46

使用php curl替换html标签内的文本

I need to replace all appearances of vowels (a,e,i,o,u) on some previously selected link with vowel i. It is some kind of internal joke (website translator app). So far I came up with this:

    <?php
    if ($_GET['sajt']!=NULL)
    {
    $url = str_replace('&', '&amp;', $_GET['sajt']);
    $ch = curl_init(); 
    // Set url and other options
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    // Get the page contents
    $html = curl_exec($ch); 

    // close curl resource to free up system resources 
    curl_close($ch);  
    $vowels = array("a", "e", "i", "o", "u");
    $onlyconsonants = str_replace($vowels, "i", $html);
    $vowels = array("A", "E", "I", "O", "U");
    $onlyconsonants = str_replace($vowels, "I", $onlyconsonants);
    echo $onlyconsonants;
    }
    ?>

However, after I do this, str_replace changes html tags also as whole html page is stored in same string (for example head to hiid). I searched but I can't figure out way to do this propertly, as it would require some kind of html parsing and then merging it all together

  • 写回答

1条回答 默认 最新

  • dongsigan2044 2014-06-23 21:45
    关注

    Dirty way...

        $strlen = strlen( $html);
        $id = "";
        for( $i = 0; $i <= $strlen; $i++ ) {
        if ($html[$i]=='<' || $html[$i]=='>') $id = $html[$i];
        if (($html[$i]=='a' || $html[$i]=='e' || $html[$i]=='o' || $html[$i]=='u') && ($id=='>')) $html[$i] = 'i';
        if (($html[$i]=='A' || $html[$i]=='E' || $html[$i]=='O' || $html[$i]=='U') && ($id=='>')) $html[$i] = 'I';
        }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line