Pergunta

OK, eu sei que eu deveria usar um analisador DOM, mas esta é a stub algum código que é uma prova de conceito para um recurso mais tarde, então eu quero chegar rapidamente algumas funcionalidades em um conjunto limitado de código de teste.

Eu estou tentando tira de largura e altura atributos de pedaços HTML, em outras palavras, substituir

width="number" height="number"

com uma cadeia em branco.

A função que eu estou tentando olhares escrever assim no momento:

function remove_img_dimensions($string,$iphone) {
    $pattern = "width=\"[0-9]*\"";
    $string = preg_replace($pattern, "", $string);

    $pattern = "height=\"[0-9]*\"";
    $string = preg_replace($pattern, "", $string);

    return $string;
}

Mas isso não funciona.

Como posso fazer esse trabalho?

Foi útil?

Solução

PHP é único entre os principais idiomas da que, apesar de expressões regulares são especificados na forma de strings literais como em Python, Java e C #, você também tem que usar delimitadores regex como em Perl, JavaScript e Ruby.

Esteja ciente, também, que você pode usar aspas simples em vez de aspas duplas para reduzir a necessidade de escapar caracteres como aspas duplas e barras invertidas. É um bom hábito de entrar, porque as regras de escape para strings delimitadas por aspas pode ser surpreendente.

Finalmente, você pode combinar as suas duas substituições em um por meio de uma alternância simples:

$pattern = '/(width|height)="[0-9]*"/i';

Outras dicas

Seu padrão precisa o personagem padrão de início / fim. Como esta:

$pattern = "/height=\"[0-9]*\"/";
$string = preg_replace($pattern, "", $string);

"/" é o caráter habitual, mas a maioria dos personagens iria funcionar. ( "| Padrão |", "o padrão # #", qualquer que seja)

Eu acho que você está perdendo os parênteses (que podem ser //, || ou vários outros pares de caracteres) que precisa cercar uma expressão regular na string. Tente alterar as atribuições padrão $ a esta forma:

$pattern = "/width=\"[0-9]*\"/";

... se você quer ser capaz de fazer uma comparação de maiúsculas e minúsculas, adicionar um 'i' no final da string, assim:

$pattern = "/width=\"[0-9]*\"/i";

Espero que isso ajude! David

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top