Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Giihh

"ctrc" + "ctrv" php

Recommended Posts

Olá,

Sei que o titulo não é apropriado, mas é uma analogia ao que quero fazer.

Estou tentando automatizar o preenchimento do atributo name dentro da tag de link <a> em todo o conteúdo, onde tiver a tag <h1> <h2> <h3> etc.

Mas não sei como copiar o conteúdo da tag de titulo para dentro do atributo name.

Por exemplo esta assim:

<h1><a name="">Esse é o titulo</a></h1>

quero que ao clicar no submit fique assim:

<h1><a name="esse-e-o-titulo">Esse é o titulo</a></h1>

Se eu usar o preg_match_all, nesse caso, o restante do conteudo vai sumir e ficar somente o que for da expressão regular.

Basicamente o que estou tentando fazer é automatizar o preencimento da tag name. Sobre transformar em slug já sei como fazer.

Outro detalhe é que pode ocorrer de ter varios h2, h3... então o name de cada um tem que estar de acordo com titulo da respectiva tag.

Alguma sugestão de qual função do php posso estar usando?

Agradeço ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

preg_match e preg_match_all servem para buscar padrões.

Quando você precisa alterar ou adicionar dados a uma string, use preg_replace

 

No seu caso, como precisa manipular o texto pra gerar a slug, vale a pena usar preg_replace_callback, pra ficar mais organizado

 

Veja um exemplo simples:

 

$txt = "
<h1>Titulo 1</h1>
<h2>Titulo 1.1</h2>
<h1>Titulo 2</h1>
";
 
$newTxt = preg_replace_callback(
    "/<h([1-6])>(.+?)<\/h[1-6]/i",
    function ($matches)
    {
        $name = strtolower(str_replace(' ', '-', $matches[2]));
        return sprintf("<h%d><a name=\"%s\">%s</h%d>", $matches[1], $name, $matches[2], $matches[1]);
    },
    $txt);
 
var_dump($newTxt);

 

Link úteis:

http://php.net/preg_replace_callback

http://php.net/sprintf

Compartilhar este post


Link para o post
Compartilhar em outros sites

:D Maravilha Beraldo, exemplo pratico e super fácil de entender, juntamente com o manual sprintf que detalha os especificadores, foi transparente. Com certeza não conseguiria fazer sozinha,

Deus te abençoe por toda ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.